home *** CD-ROM | disk | FTP | other *** search
-
-
- Augusta is a subset of the US Department of Defense computer
- language Ada. It was devised by Edward Mitchell and published in
- Dr. Dobb's Journal. As published, it consists of four files.
- AUGUSTA.BAS is the compiler, written in generic Microsoft BASIC.
- It reads in keywords, predefined constants and some other stuff
- from KEYWORDS.TXT when it is run. The remaining two files are
- demonstration programs published with the compiler. SIEVE.AUG is
- the popular Eratosthenes Sieve benchmark, while DEMO.AUG is a
- simple number guessing game.
- The rest of the programs in this set were added by me.
- AUGUSTA.PAS is a direct translation of AUGUSTA.BAS into Borland
- Turbo Pascal, with minor modifications to put it in procedure
- form and make it a little more understandable. ADIS.PAS is a
- disassembler for compiled Augusta programs, to translate them
- into something readable, similar to assembly language. Finally,
- ATERP.PAS is an interpreter for compiled programs. The need for
- these last two will be explained.
- Augusta is based on an interpreter which implements a stack-
- oriented virtual machine. This machine executes special "pseudo-
- code", in which each byte represents a simple operation, say "Add
- 2 Integers", or "Print A String". The interpreter goes through
- the compiled p-code, decoding the bytes and carrying out the
- appropriate operation. This system has advantages and disadvan
- tages. On the good side, the compiled programs can be moved to
- another computer without any changes, and will run just the same.
- The same could be said of the original source program, but p-code
- can be interpreted much faster than the source could be. On the
- bad side, p-code interpretation is much slower than a normal
- program. The extra layer of software between the program and the
- microprocessor has a high cost in speed. Furthermore, even
- though the compiled program can be moved unmodified, the inter
- preter can not. Each computer has to have its own interpreter.
- Fortunately the interpreter can be written in a high level lang
- uage and moved over with little trouble.
- The published articles introducing Augusta span four issues
- of Dr. Dobb's, totalling over fifty pages. They explain the
- operation of the compiler, the language syntax, and the details
- of the p-code system. I won't try to explain it all here.
- Instead, I'll tell you how to get yourself started and let you do
- the rest. If you want more info, I refer you to Dr. Dobb's
- issues 75, 77, 79, and 81, running every other month from January
- to July of 1983. There is a 160 page book about Augusta men
- tioned in the article available from Laboratory Microsystems
- Inc., 4147 Beethoven Street, Los Angeles, CA, 90066. They also
- offer a complete Z80 CP/M interpreter written in assembly lang
- uage.
- I read about Augusta and got interested, but for some reason
- no interpreter was provided with the compiler. Wanting to use
- the system, I wrote an interpreter for my IBM PC. In the pro
- cess, I needed and wrote a disassembler to see just what p-codes
- were being used. And when those were through, I knew the com
- piler well enough to translate it to Pascal in short order.
- If you want to use my programs, you'll need Turbo Pascal. You
- can compile the demonstration Augusta programs two ways. Either
- you can run AUGUSTA.BAS from BASIC or AUGUSTA.PAS from Turbo.
- They both use KEYWORDS.TXT and prompt for what they want. To run
- the programs, you must have Turbo. Use ATERP. It takes one
- command line parameter, the name of the compiled Augusta file.
- If you want to see what p-code nmemonics look like, run ADIS from
- Turbo. It will prompt for the filename and go by itself, leaving
- the text disassembly on disk. I've tried to make everything non-
- MSDOS specific. I think I did it right, but it's untested.
- AUGUSTA.PAS and ADIS.PAS should be no problem, but ATERP.PAS has
- a variable System_Size, to be defined as 8 or 16 as needed. If
- you've set that properly and it still won't work, likely trouble
- spots are the free memory calculations or the pointer operations.
- If anyone has any comments or bugs to report or maybe an
- improved version, I'd like to hear about it. I'll be the first
- to admit that my work could use some work. Public domain soft
- ware is meant to be explored and improved upon, and I'd like to
- think that Augusta is no exception.
-
- Jim Castleberry
- 12404 Summerport Lane
- Windermere, FL, 32786
- January 6, 1986
-